A boom in Internet of Things (IoT) is currently being witnessed. The term IoT refers to the concept of essentially connecting any device with an on and off switch to the Internet (and/or to each other). This includes everything from cell phones, coffee makers, washing machines, headphones, lamps, wearable devices, cars, and almost anything else of which one can think. This also applies to components of machines, for example, a jet engine of an airplane or the drill of an oil rig. It has been predicted by an analyst firm as one estimate that, by 2020, there will be over 26 billion connected IoT devices. Current trends indicate that IoT traffic volumes will dominate communication networks in the near future. One source of traffic volume is software upgrades. Thus, from a network provider perspective, there is an urgent need for a system and method for delivering software updates to IoT devices in a way that makes efficient use of the network spectrum, minimizes the cost of network capacity expansion, maximizes the update success rate, and ensures minimal impact to all network users.